const path = require('path')
const HtmlPlugin = require('html-webpack-plugin')

module.exports = {
  // 模式: 开发
  mode: 'development',
  // 多入口
  entry: {
    books: './src/pages/books/index.js',
    add: './src/pages/add/index.js',
    update: './src/pages/update/index.js',
  },
  // 出口(多个)
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'js/[name]_[contenthash:8].js',
    clean: true
  },

  module: {
    rules: [
      // ES6 => ES5
      {
        test: /\.js$/, // 处理js文件
        exclude: /(node_modules)/, // 不对node_modules下的js进行处理
        use: { // 使用指定loader
          loader: 'babel-loader',
          options: { 
            // 指定babel的预设包
            // presets: ['@babel/preset-env'],
      
            presets: [
              [
                '@babel/preset-env',
                {
                  useBuiltIns: 'usage', // 只打包使用的ES6新API的实现代码
                  corejs: { version: 2 } // 指定core-js的版本号为2
                }
              ]
            ],
            // 指定babel的插件
            plugins: []
          }
        }
      },
      // 打包art文件
      {
        test: /\.art$/,
        use: 'art-template-loader'
      }
    ]
  },

  plugins: [
    // 打包多个页面
    new HtmlPlugin({
      template: './src/pages/index.html',
      inject: 'body'
    }),
    new HtmlPlugin({
      template: './src/pages/books/index.html',
      filename: 'books.html', // 指定生成的文件名
      inject: 'body',
      chunks: ['books']  // 将books的js打包引入当前页面中
    }),
    new HtmlPlugin({
      template: './src/pages/add/index.html',
      filename: 'add.html', // 指定生成的文件名
      inject: 'body',
      chunks: ['add']  // 将add的js打包引入当前页面中
    }),
    new HtmlPlugin({
      template: './src/pages/update/index.html',
      filename: 'update.html', // 指定生成的文件名
      inject: 'body',
      chunks: ['update']  // 将update的js打包引入当前页面中
    }),
  ],

  devServer: {
    port: 5000,
    open: true
  }
}